博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
easyui源码翻译1.32--Dialog(对话框窗口)
阅读量:5038 次
发布时间:2019-06-12

本文共 7254 字,大约阅读时间需要 24 分钟。

前言

扩展自$.fn.window.defaults。使用$.fn.dialog.defaults重写默认值对象。

该对话框是一种特殊类型的窗口,它在顶部有一个工具栏,在底部有一个按钮栏。对话框窗口右上角只有一个关闭按钮用户可以配置对话框的行为显示其他工具,如collapsible,minimizable,maximizable工具等。

源码

/** * jQuery EasyUI 1.3.2 *  *翻译:qq 1364386878  对话框窗口 */(function ($) {    //包裹对话框窗口    function wrapDialog(target) {        var cp = document.createElement("div");        while (target.firstChild) {            cp.appendChild(target.firstChild);        }        target.appendChild(cp);        var contentPanel = $(cp);        contentPanel.attr("style", $(target).attr("style"));        $(target).removeAttr("style").css("overflow", "hidden");        contentPanel.panel({            border: false,            doSize: false,            bodyCls: "dialog-content"        });        return contentPanel;    };    //初始化    function init(jq) {        var options = $.data(jq, "dialog").options;        var contentPanel = $.data(jq, "dialog").contentPanel;        if (options.toolbar) {            if (typeof options.toolbar == "string") {                $(options.toolbar).addClass("dialog-toolbar").prependTo(jq);                $(options.toolbar).show();            } else {                $(jq).find("div.dialog-toolbar").remove();                var toolbar = $("
").prependTo(jq); var tr = toolbar.find("tr"); for (var i = 0; i < options.toolbar.length; i++) { var buttons = options.toolbar[i]; if (buttons == "-") { $("
").appendTo(tr); } else { var td = $("").appendTo(tr); var tool = $("").appendTo(td); tool[0].onclick = eval(buttons.handler || function () { }); tool.linkbutton($.extend({}, buttons, { plain: true })); } } } } else { $(jq).find("div.dialog-toolbar").remove(); } if (options.buttons) { if (typeof options.buttons == "string") { $(options.buttons).addClass("dialog-button").appendTo(jq); $(options.buttons).show(); } else { $(jq).find("div.dialog-button").remove(); var _b = $("
").appendTo(jq); for (var i = 0; i < options.buttons.length; i++) { var buttons = options.buttons[i]; var button = $("").appendTo(_b); if (buttons.handler) { button[0].onclick = buttons.handler; } button.linkbutton(buttons); } } } else { $(jq).find("div.dialog-button").remove(); } var href = options.href; var content = options.content; options.href = null; options.content = null; //渲染面板 contentPanel.panel({ closed: options.closed, cache: options.cache, href: href, content: content, onLoad: function () { if (options.height == "auto") { $(jq).window("resize"); } options.onLoad.apply(jq, arguments); } }); $(jq).window($.extend({}, options, { onOpen: function () { if (contentPanel.panel("options").closed) { contentPanel.panel("open"); } if (options.onOpen) { options.onOpen.call(jq); } }, onResize: function (width, height) { var win = $(jq); contentPanel.panel("panel").show(); contentPanel.panel("resize", { width: win.width(), height: (height == "auto") ? "auto" : win.height() - win.children("div.dialog-toolbar")._outerHeight() - win.children("div.dialog-button")._outerHeight() }); if (options.onResize) { options.onResize.call(jq, width, height); } } })); options.href = href; options.content = content; }; //刷新 function _refresh(jq, content) { var contentPanel = $.data(jq, "dialog").contentPanel; contentPanel.panel("refresh", content); }; //实例化对话框 $.fn.dialog = function (target, parm) { if (typeof target == "string") { var method = $.fn.dialog.methods[target]; if (method) { return method(this, parm); } else { return this.window(target, parm); } } target = target || {}; return this.each(function () { var dialog = $.data(this, "dialog"); if (dialog) { $.extend(dialog.options, target); } else { $.data(this, "dialog", { options: $.extend({}, $.fn.dialog.defaults, $.fn.dialog.parseOptions(this), target), contentPanel: wrapDialog(this) }); } init(this); }); }; //默认方法 $.fn.dialog.methods = { //返回属性对象 options: function (jq) { var options = $.data(jq[0], "dialog").options; var panelopts = jq.panel("options"); $.extend(options, { closed: panelopts.closed, collapsed: panelopts.collapsed, minimized: panelopts.minimized, maximized: panelopts.maximized }); var contentPanel = $.data(jq[0], "dialog").contentPanel; return options; }, //返回外部对话框窗口对象 dialog: function (jq) { return jq.window("window"); }, //刷新面板来装载远程数据。如果'href'属性有了新配置,它将重写旧的'href'属性 refresh: function (jq, href) { return jq.each(function () { _refresh(this, href); }); } }; //解析器 $.fn.dialog.parseOptions = function (target) { return $.extend({}, $.fn.window.parseOptions(target), $.parser.parseOptions(target, ["toolbar", "buttons"])); }; //默认属性 同时继承window的 $.fn.dialog.defaults = $.extend({}, $.fn.window.defaults, { title: "New Dialog",//对话框窗口标题文本 collapsible: false,//对话框窗口标题文本 minimizable: false,//对话框窗口标题文本 maximizable: false,//对话框窗口标题文本 resizable: false,//定义是否可以改变对话框窗口大小 //设置对话框窗口顶部工具栏,可用值有: //1) 一个数组,每一个工具栏中的工具属性都和linkbutton相同。 //2) 一个选择器指定工具栏。 toolbar: null, //对话框窗口底部按钮,可用值有: //1) 一个数组,每一个按钮的属性都和linkbutton相同。 //2) 一个选择器指定按钮栏。 buttons: null });})(jQuery);
View Code

 

示例代码

    
Basic Dialog - jQuery EasyUI Demo

Basic Dialog

Click below button to open or close dialog.
The dialog content.
View Code

 

插件效果

转载于:https://www.cnblogs.com/DemoLee/p/3499121.html

你可能感兴趣的文章
[算法之美] KMP算法的直观理解
查看>>
EntityFramework 性能优化
查看>>
【ASP.NET开发】菜鸟时期的ADO.NET使用笔记
查看>>
android圆角View实现及不同版本号这间的兼容
查看>>
OA项目设计的能力③
查看>>
Cocos2d-x3.0 文件处理
查看>>
全面整理的C++面试题
查看>>
Activity和Fragment生命周期对比
查看>>
查找 EXC_BAD_ACCESS 问题根源的方法
查看>>
日常报错
查看>>
list-style-type -- 定义列表样式
查看>>
Ubuntu 编译出现 ISO C++ 2011 不支持的解决办法
查看>>
Linux 常用命令——cat, tac, nl, more, less, head, tail, od
查看>>
VueJS ElementUI el-table 的 formatter 和 scope template 不能同时存在
查看>>
Halcon一日一练:图像拼接技术
查看>>
iOS设计模式 - 中介者
查看>>
centos jdk 下载
查看>>
HDU 1028 Ignatius and the Princess III(母函数)
查看>>
(转)面向对象最核心的机制——动态绑定(多态)
查看>>
token简单的使用流程。
查看>>